﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Atomic.Db;
using Atomic.Permission.Entities;
using Atomic.Common;
using NHibernate;
using NHibernate.Criterion;

/****************************************************************
 * 作者：杜一博
 * 日期：2012/9/18 14:24:49
 * 描述：
 * 
 * --------------------------------------------------------------
 * 修改记录：
 * --------------------------------------------------------------
 * 修改人：
 * 修改日期：
 * 修改内容：
 * 
 ****************************************************************/

namespace Atomic.Permission.DAL
{
    /// <summary>
    /// 描述内容
    /// </summary>
    public class RoleDAL : BaseDAL<RoleEntity>
    {
        /// <summary>
        /// 分页查询角色列表，按Sort字段排序
        /// </summary>
        /// <param name="pager">分页参数</param>
        /// <param name="predicate">查询筛选条件</param>
        /// <returns>角色列表</returns>
        public override Common.Pager<RoleEntity> GetPager(Common.Pager pager, System.Linq.Expressions.Expression<Func<RoleEntity, bool>> predicate = null)
        {
            Pager<RoleEntity> p = null;
            using (session = HibernateHelper.GetSession())
            {
                ICriteria crite = session.CreateCriteria<RoleEntity>();
                p = new Pager<RoleEntity>()
                {
                    Records = crite
                        .AddOrder(Order.Asc("Sort"))
                        .SetFirstResult((pager.Index - 1) * pager.Rows)
                        .SetFetchSize(pager.Rows).List<RoleEntity>(),
                    Total = session.CreateCriteria<RoleEntity>().SetProjection(Projections.RowCount()).UniqueResult<int>()
                };
            }
            return p;
        }
    }
}
